module.exports = async function (ctx, next) {
  // 验证登陆
  if (ctx.path !== '/api/login' && ctx.path !== '/api/logout' && !ctx.session.user) {
    ctx.body = {
      success: false,
      error: '请登陆',
    };
    return;
  }

  try {
    await next();
    let success = ctx.state.code === undefined;
    ctx.body = ctx.body ? ctx.body : {
      success,
      data: success ? ctx.state.data : {},
      error: ctx.state.error
    };
  } catch (e) {
    // catch 住全局的错误信息
    console.log('Catch Error: %o', e);

    // 设置状态码为 200 - 服务端错误
    ctx.status = 200;

    ctx.body = {
      success: false,
      error: e && e.message ? e.message : e.toString(),
    };
  }
};
